home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 4
/
FM Towns Free Software Collection 4 - Disc 1.iso
/
fb386
/
pickup
/
g_savior.bas
< prev
next >
Wrap
BASIC Source File
|
1991-10-18
|
9KB
|
240 lines
0 KEY (1) ON :ON KEY (1) GOSUB 65010:PLAY OFF
10 '
20 ' THE GREATEST SAVIOR / by Kazuya Shimada
30 '
40 DEFINT A-Z
50 DIM T(4,9),D(47),V(23)
60 PLAY OFF:BGM 1:LOAD@"PDRUMS.PMB":LOAD@ "Q:\FJ\FM\FM_1.FMB"
70 FOR I=0 TO 13:PART I,I:NEXT I
80 '----
90 GOSUB *READ_DATA
100 ' AF PAN PMS AMS
110 DATA 62, 0, 0, 0, 0, 0, 3, 0, 0, 0
120 ' AR DR SR RR SL TL KS ML DT main
130 DATA 31, 3, 4, 4, 4, 29, 1, 2, 0, 0
140 DATA 31, 5, 2, 4, 4, 12, 1, 2, 0, 0
150 DATA 31, 4, 3, 4, 4, 12, 1, 5, 1, 0
160 DATA 31, 2, 2, 7, 4, 12, 0, 6, 0, 0
170 GOSUB *VOICE_SET:VOICE 1,V,0
180 '----
190 GOSUB *READ_DATA
200 ' AF PAN PMS AMS
210 DATA 58, 0, 0, 0, 0, 0, 3, 0, 0, 0
220 ' AR DR SR RR SL TL KS ML DT chord
230 DATA 31, 0, 1, 5, 1, 32, 1, 4, 0, 0
240 DATA 31, 1, 1, 4, 0, 32, 1, 4, 0, 0
250 DATA 31, 1, 0, 7, 1, 32, 1, 2, 0, 0
260 DATA 31, 1, 2, 9, 1, 8, 1, 2, 3, 0
270 GOSUB *VOICE_SET:VOICE 2,V,0
280 '----
290 GOSUB *READ_DATA
300 ' AF PAN PMS AMS
310 DATA 56, 0, 0, 0, 0, 0, 3, 0, 0, 0
320 ' AR DR SR RR SL TL KS ML DT syn.2
330 DATA 31, 0, 0, 9, 0, 31, 1, 2, 7, 0
340 DATA 31, 0, 0, 9, 0, 25, 1, 2, 7, 0
350 DATA 31, 0, 0, 9, 0, 32, 1, 2, 7, 0
360 DATA 31, 0, 0, 9, 0, 7, 1, 2, 7, 0
370 GOSUB *VOICE_SET:VOICE 3,V,0
380 '----
390 GOSUB *READ_DATA
400 ' AF PAN PMS AMS
410 DATA 27, 0, 0, 0, 0, 0, 3, 0, 0, 0
420 ' AR DR SR RR SL TL KS ML DT e.bass
430 DATA 31, 15, 14, 9, 6, 38, 1, 4, 0, 0
440 DATA 31, 11, 12, 5, 5, 33, 1, 0, 0, 0
450 DATA 31, 8, 7, 5, 3, 33, 1, 1, 3, 0
460 DATA 31, 6, 5, 7, 3, 1, 1, 1, 3, 0
470 GOSUB *VOICE_SET:VOICE 4,V,0
480 '----
490 GOTO 680
500 *VOICE_SET
510 D%(32)=T%(0,0)
520 FOR I%=0 TO 3:J%=I%+1
530 D%( 8+I%)=(T%(J%,8) AND 7)*16+(T%(J%,7) AND 15)
540 D%(12+I%)=(T%(J%,5) AND 127)
550 D%(16+I%)=(T%(J%,6) AND 3)*64+(T%(J%,0) AND 31)
560 D%(20+I%)=T%(J%,1) AND 31
570 D%(24+I%)=T%(J%,2) AND 31
580 D%(28+I%)=(T%(J%,4) AND 15)*16+(T%(J%,3) AND 15)
590 NEXT
600 D%(33)=((T%(0,6) AND 3)*64)+((T%(0,7) AND 3)*16)+((T%(0,8) AND 7)):'D%(34)=0
610 FOR I%=0 TO 47 STEP 2:L&=D%(I%+1)*256+D%(I%)
620 IF L&<&H8000 THEN V%(I%\2)=CINT(L&) ELSE V%(I%\2)=CINT(L&-&H10000)
630 NEXT:RETURN
640 '----
650 *READ_DATA
660 FOR X=0 TO 4:FOR Y=0 TO 9:READ T%(X,Y):NEXT Y:NEXT X
670 RETURN
680 GOSUB 1300
690 T$="T144%CU0Q8"
700 PLAY T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$,T$
710 A0$="V12L8O4F4.CF.G+.>C <B-16G+16GGG+B-2"
720 C0$="L8O4F16&F4.CF.G+.>C <B-16G+16GGG+B-4.&B-16"
730 D0$="@2V12L1O3G+ G"
740 E0$="@2V12L1O4C <B-"
750 F0$="@4V11L8O2(F>F<)4 (E->E-<)4"
760 G0$="@3V15L4O3ARAR ARAR"
770 H0$="V15L4O4RERE RERE"
780 'I0$="@4V15L16O6((A8AA)4)2"
790 I0$="@4V15L16O4((AAAA)4)2"
800 J0$="V13L4O4C2..<G+8 B-1"
810 A1$="O4E-4.<B->E-.G.B- G+G16F16&F4C+4E-4"
820 C1$="O4E-16&E-4.<B->E-.G.B- G+G16F16&F4C+4E-8."
830 D1$="O3G G+2F4G4"
840 E1$="O3B- >C2<G+4B-4"
850 F1$="O2(E->E-<)4 (C+>C+<)3E->E-"
860 G1$="O3ARAR ARAR"
870 H1$="O4RERE RERL16EEEE"
880 J1$="O3G1 >C2<G+A+"
890 A2$="O4F4.CF.G+.>C <B-16G+16GGB->E-2"
900 C2$="O4F16&F4.CF.G+.>C <B-16G+16GGB->E-4.&E-16"
910 A3$="O4E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-4"
920 C3$="O4E-16&E-8<B-8L16B-B->G+G+L8G+GGG+ G.F16F4F4E-8."
930 D3$="O3G E-8.D-2&D-16"
940 E3$="O3B- G8.F2.&F16"
950 F3$="O2(E->E-<)4 (C+>C+<)4"
960 G3$="O3ARAR ARAR"
970 H3$="O4RERE RER8L16EEEEEE"
980 J3$="O3B-1 B-2G+4G4"
990 A4$="O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
1000 C4$="U120@3V12O4L8D-4.D-16E-16F.E-.D- G.F.E-G+.G.F"
1010 D4$="O3F G2F2"
1020 E4$="O3G+ B-2G+2"
1030 F4$="O2((D->D-<)4)2"
1040 J4$="O3G+2..G8 G+1"
1050 A5$="O4G.G+.G&G2 G.G+.G&G2"
1060 C5$="O4G.G+.G&G2 V15U0L16CDEF DEFG EFGG+ FGG+B-U80V12"
1070 D5$="O3E E"
1080 E5$="O3G G"
1090 F5$="O2((C>C<)4)2"
1100 J5$="O3G+1 G+2G2"
1110 A6$="O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
1120 C6$="U120O4L8D-4.D-16E-16F.E-.D- G.F.E-B-.G+.G16F16"
1130 A7$="O4G1 G+2G2"
1140 C7$="O4G1 G+2G2"
1150 D7$="O3E F2E2"
1160 E7$="O3G G+2G2"
1170 F7$="O2(G>G<)4G>G<G+>G++<A>A<B->B-"
1180 G7$="O3ARAR ARAR"
1190 H7$="O4RER8E8L16EEEE L4REL16EEEEEEEE"
1200 J7$="O3G1 >C2<B-2"
1210 PLAY "@1%C"+A0$,"@1%CU40"+A0$,"@1V8U80"+C0$,D0$,E0$,F0$,G0$,"@2%R"+H0$,I0$,"U20@2%L"+H0$,"@14%L"+J0$,"U40@14%R"+J0$,"U120"+I0$
1220 PLAY A1$,A1$,C1$,D1$,E1$,F1$,G1$,H1$,I0$,H1$,J1$,J1$,I0$
1230 PLAY A2$,A2$,C2$,D0$,E0$,F0$,G0$,H0$,I0$,H0$,J0$,J0$,I0$
1240 PLAY A3$,A3$,C3$,D3$,E3$,F3$,G3$,H3$,I0$,H3$,J3$,J3$,I0$
1250 PLAY A4$,A4$,C4$,D4$,E4$,F4$,G0$,H0$,I0$,H0$,J4$,J4$,I0$
1260 PLAY A5$,A5$,C5$,D5$,E5$,F5$,G1$,H1$,I0$,H1$,J5$,J5$,I0$
1270 PLAY A6$,A6$,C6$,D4$,E4$,F4$,G0$,H0$,I0$,H0$,J4$,J4$,I0$
1280 PLAY A7$,A7$,C7$,D7$,E7$,F7$,G7$,H7$,I0$,H7$,J7$,J7$,I0$
1290 GOTO 1210
1300 '
1400 GOSUB *SCREEN
1410 I$=INKEY$
1420 IF I$="" THEN 1410
1430 GOSUB *F_OUT:SCREEN@ 1:CLS
1440 LINE(0,0)-(319,119),PSET,[0,128,64],BF
1450 FOR I=0 TO 119
1460 PASTEL I*.7!
1470 LINE(0,I)-(319,I),PASTEL,6
1480 NEXT
1490 PASTEL 64
1500 Y=120:VY=1:C=0
1510 LINE(0,Y)-(319,Y+VY-1),PSET,[0,C,0],BF
1520 C=C+8
1530 Y=Y+VY:VY=VY+1:IF Y<240 THEN 1510
1540 FOR J=0 TO 1
1550 X=108:XX=X
1560 FOR I=0 TO 119
1570 X=X+INT(RND*8)-INT(RND*8)
1580 LINE(X,I)-(XX,I-1),PSET,6:XX=X
1590 NEXT
1600 NEXT
1610 CIRCLE(120,80),30,5,,,,F,PASTEL
1620 CIRCLE(225,93),30,5,,,,F,PASTEL
1630 FOR I=0 TO 16
1640 CONNECT(120,80-I)-(225,93-I)-(248,158-I)-(44,126-I),[0,0,I*6+128],PSET,F
1650 NEXT
1660 I=70
1670 CONNECT(120,80+I)-(225,93+I)-(248,158+I)-(44,126+I),[0,0,64],PASTEL,F
1680 PASTEL 128
1690 CIRCLE(44,126),40,5,,,,F,PASTEL
1700 CIRCLE(248,158),40,5,,,,F,PASTEL
1710 SYMBOL (161,0),"THE GREATEST SAVIOR",.5!,1,0
1720 SYMBOL (160,0),"THE GREATEST SAVIOR",.5!,1,7
1730 RETURN
17000 *SCREEN
17010 SCREEN@ 0 : PALETTE@
17020 FOR I=0 TO 15 : PALETTE I,[0,0,0] : NEXT
17030 COLOR ,%5 : CLS
17040 X=630 : Y=30 : MX=2 : MY=3: R=3 : C1=1 : C2=5 : C3=15 : F=16
17050 ST$="PICK UP TOWNS" : GOSUB *STR_PUT
17060 X=575 : Y=30 : MX=2 : MY=3 : R=3 : C1=1 : C2=5 : C3=15 : F=16
17070 ST$="MUSIC PROGRAM" : GOSUB *STR_PUT
17080 GOSUB *F_IN : FOR I=0 TO 2000 : NEXT
17090 X1=10 : X2=510 : Y1=10 : Y2=460 : C1=1 : C2=6 : C3=15
17100 GOSUB *WAKU
17110 X1=20 : X2=500 : Y1=20 : Y2=90 : C1=15 : C2=7 : C3=5
17120 GOSUB *WAKU
17130 X1=20 : X2=500 : Y1=420 : Y2=450 : C1=15 : C2=7 : C3=5
17140 GOSUB *WAKU
17150 X1=20 : X2=500 : Y1=100 : Y2=410 : C1=15 : C2=7 : C3=5
17160 GOSUB *WAKU
17170 SYMBOL (30,430),"PF1キーを押すと、演奏を中断して音楽MENUに戻ります。",1,1,0,,,1
17180 SYMBOL (30,30)," TITLE ",1,1,0,0,PSET,17
17190 SYMBOL (80,53),"THE GREATEST SAVIOR",1,2,0,0,PSET,1
17200 SYMBOL (30,110)," DATA ",1,1,0,0,PSET,17
17210 SYMBOL (80,140),"Programed by KAZUYA SHIMADA",1,1,0,0,PSET,1,1
17220 SYMBOL (80,160)," Composed by KAZUYA SHIMADA",1,1,0,0,PSET,1,1
17230 SYMBOL (30,200)," MESSAGE ",1,1,0,0,PSET,17
17240 'ST$()="・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・"
17250 ST$(0)=" THE LIGHT SOLDIER のアレンジです。"
17260 ST$(1)="しかしオーケストラヒットなんて初めてなので、うまくいき"
17270 ST$(2)="ませんでした。次は、もっと勉強して腕を磨くぞ。(でも、"
17280 ST$(3)="忙しくてそんな暇が無かったりする。)"
17290 ST$(4)=""
17300 ST$(5)="リターンキー、または実行キーを押すと演奏が始まります。"
17310 ST$(6)=""
17320 ST$(7)=""
17330 GOSUB *MESSAGE
17340 RETURN
17350 *STR_PUT
17360 SYMBOL (X,Y),ST$,MX,MY,%C1,R,PSET,F
17370 SYMBOL (X+1,Y),ST$,MX,MY,%C1,R,PSET,F
17380 SYMBOL (X+2,Y),ST$,MX,MY,%C1,R,PSET,F
17390 SYMBOL (X+2,Y-1),ST$,MX,MY,%C1,R,PSET,F
17400 SYMBOL (X+2,Y-2),ST$,MX,MY,%C1,R,PSET,F
17410 SYMBOL (X,Y-2),ST$,MX,MY,%C3,R,PSET,F
17420 SYMBOL (X+1,Y-2),ST$,MX,MY,%C3,R,PSET,F
17430 SYMBOL (X,Y-1),ST$,MX,MY,%C3,R,PSET,F
17440 SYMBOL (X+1,Y-1),ST$,MX,MY,%C2,R,PSET,F
17450 RETURN
17460 *WAKU
17470 LINE (X1+2,Y1+2)-(X2-2,Y2-2),PSET,%C2,BF
17480 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),%C3
17490 CONNECT (X1+1,Y2-1)-(X1+1,Y1+1)-(X2-1,Y1+1),%C3
17500 CONNECT (X1+1,Y2)-(X2,Y2)-(X2,Y1+1),%C1
17510 CONNECT (X1+2,Y2-1)-(X2-1,Y2-1)-(X2-1,Y1+2),%C1
17520 RETURN
17530 *MESSAGE
17540 FOR I=0 TO 7
17550 SYMBOL (50,230+20*I),ST$(I),1,1,0,0,PSET,1
17560 NEXT I
17570 RETURN
17580 *F_OUT
17590 FOR I=16 TO 1 STEP -1 : GOSUB *PALETTE : NEXT I :COLOR ,%0: CLS: RETURN
17600 *F_IN
17610 FOR I=1 TO 16 : GOSUB *PALETTE : NEXT I : RETURN
17620 *PALETTE
17630 PALETTE 1,[0*I,0*I,1*I]
17640 PALETTE 2,[1*I,0*I,2*I]
17650 PALETTE 3,[2*I,1*I,3*I]
17660 PALETTE 4,[4*I,2*I,6*I]
17670 PALETTE 5,[8*I,6*I,9*I]
17680 PALETTE 6,[12*I,10*I,13*I]
17690 PALETTE 7,[14*I,13*I,15*I]
17700 PALETTE 15,[15*I,15*I,15*I]
17710 RETURN
65000 BGM 0:PLAY "R64":BGM 1
65010 KEY (1) OFF:PLAY OFF:FOR I=0 TO 13:PART I,I:NEXT:RUN"MENU.BAS"